package offer.offer01;

/**
 *
 */
public class S25合并两个已排序的链表 {
    // 98, 我使用递归来进行排序, 函数每次返回比较小的那一个节点, 感觉这个递归有点好啊。
    // 实际上可以直接用循环来把小的值一个个添加到链表后面, 效果类似, 循环添加的话, 可以使用一个伪头结点, 这个好。
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null || l2 == null){
            return l1 == null? l2: l1;
        }
        //声明一个新的节点的话会浪费很多内存, 这里就使用原本的数据
        if(l1.val < l2.val){
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        }else{
            l2.next = mergeTwoLists(l1, l2.next);
            return l2;
        }
    }
}
